package report

import (
	"context"
	"git.mycaigou.com/gfyx/common/http_client"

	cluePb "git.mycaigou.com/gfyx/micro-gfyx-mp-api/proto/micro_gfyx_oppty_service_proto/micro-gfyx-oppty-service/clue"

	reportDto "git.mycaigou.com/gfyx/micro-gfyx-mp-api/http_server/dto/report"
	micro_gfyx_user_service "git.mycaigou.com/gfyx/micro-gfyx-mp-api/proto/micro_gfyx_user_service_proto/micro-gfyx-user-service"
)

type ReportRepositoryIface interface {
	GetFormTemplateConfig(ctx context.Context, templateId string) ([]map[string]interface{}, error)

	GetFormDataRule(ctx context.Context, key string) ([]map[string]interface{}, error)

	GetUserList(ctx context.Context) (map[string]interface{}, error)

	GenerateUrl(ctx context.Context, rs *ReportShare) (string, error)

	ReceiveUrl(ctx context.Context, userId, code string) (bool, error)

	ReportFromSharingList(ctx context.Context, condition *reportDto.ReportFromSharingListRequestDto) (int64, []*micro_gfyx_user_service.ReportFromSharing, error)

	ReportInfo(ctx context.Context, condition *reportDto.ReportInfoRequestDto) (*micro_gfyx_user_service.ReportFromSharing, error)

	SearchContacts(ctx context.Context, params *reportDto.SearchContactRequest) (*http_client.BigDataResponse, error)

	GetTeamLeader(ctx context.Context, reportId string) (map[string]interface{}, error)

	FillReportForm(ctx context.Context, params *reportDto.FillReportFormRequest) (*http_client.BigDataResponseList, error)

	GetReportSourceInfo(ctx context.Context, sourceType, sourceId string) (map[string]interface{}, error)

	Save(ctx context.Context, saveReq *reportDto.SaveRequest) (bool, string, error)

	GetReport(ctx context.Context, reportId string) (*cluePb.GetReportResponse, error)

	GetReportList(ctx context.Context, request *reportDto.ReportMyListRequestDto) (*cluePb.GetReportListResponse, error)

	GetRegionReportList(ctx context.Context, request *reportDto.ReportMyListRequestDto) (*cluePb.GetReportListResponse, error)

	GetReportStat(ctx context.Context) (*cluePb.MyReportStatResponse, error)

	UpdateReportShare(ctx context.Context, userUid string, code string, data *micro_gfyx_user_service.ReportFromSharing) (bool, error)
}
